package com.wh.hotel.service.strategy.time;

import com.wh.hotel.vo.HotelPriceStrategyVo;

import java.util.Date;
import java.util.List;

/**
 * @author luweije
 */
public interface ValidTimeTemplate {

    /**
     * 是否命中策略strategyVo
     * @param cur 日期
     * @param strategyVo 需要判断的策略
     * @return 是否命中
     */
    boolean isHit(Date cur, HotelPriceStrategyVo strategyVo);

    /**
     * 计算给定时间范围内，满足策略的所有日期
     *
     * @param strategyVo 策略
     * @param startDt 开始日期 闭区间
     * @param endDt 结束日期 闭区间
     * @return 满足条件的所有日期
     */
    List<Date> calculateValidTime(HotelPriceStrategyVo strategyVo, Date startDt, Date endDt);
}
